# -*- coding: utf-8 -*-
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from apps.amway.models import FlujoCaja
################################################################################
date_dict = { 'id' : 'datepicker', 'autocomplete' : 'off'  }
################################################################################
class IngresoDineroForm(forms.Form):

    valor = forms.CharField()
    fecha= forms.DateField(widget=forms.TextInput(attrs=date_dict))
    descripcion = forms.CharField(max_length=100)    
    
    def clean_valor(self):
        valor = int(self.cleaned_data.get('valor'))        
        if valor < 0 :
            raise forms.ValidationError(_(u'No Puede Ingresar Valores Negativos'))        
        return valor
    
    def save(self, usuario):
        haber  = int(self.cleaned_data['valor'])
        saldo_actual = FlujoCaja.objects.get_last_balance(usuario)
        debe = 0
        nuevo_saldo = saldo_actual + haber
        flujo_caja = FlujoCaja.objects.create(saldo=nuevo_saldo, haber=haber, debe=debe, descripcion=self.cleaned_data['descripcion'],
                                              fecha=self.cleaned_data['fecha'], usuario=usuario)         
################################################################################
class EgresoDineroForm(forms.Form):

    valor = forms.CharField()
    fecha= forms.DateField(widget=forms.TextInput(attrs=date_dict))
    descripcion = forms.CharField(max_length=100)    
    usuario = forms.CharField(widget=forms.HiddenInput())
    
    
    def user_init_val(self, usuario):
        self.fields['usuario'].initial = usuario.username
        
    
    def clean_valor(self):
        valor = int(self.cleaned_data.get('valor'))        
        if valor < 0 :
            raise forms.ValidationError(_(u'No Puede Ingresar Valores Negativos'))        
        return valor   

    def clean(self):
        valor  = self.cleaned_data.get('valor')
        usuario = User.objects.get(username__exact=self.cleaned_data.get('usuario'))
        
        if usuario and valor:
            
            saldo_actual = FlujoCaja.objects.get_last_balance(usuario)            
            saldo = saldo_actual - int(valor)
            
            if saldo < 0:
                raise forms.ValidationError(_(u'No Puede Generar Egresos porque no tiene el dinero disponible en su caja'))
                
        return self.cleaned_data            
    
    
    def save(self, usuario):
        debe  = int(self.cleaned_data['valor'])        
        saldo_actual = FlujoCaja.objects.get_last_balance(usuario)
        
        haber = 0
        nuevo_saldo = saldo_actual - debe
        flujo_caja = FlujoCaja.objects.create(saldo=nuevo_saldo, haber=haber, debe=debe, descripcion=self.cleaned_data['descripcion'],
                                              fecha=self.cleaned_data['fecha'], usuario=usuario)
################################################################################